package com.easonji.admin.manager;

import java.util.List;

import com.easonji.common.node.MenuNode;
import com.easonji.common.node.TreeNode;

/**
 * @ClassName: PermissionManager
 * @Description: 权限通用类接口
 * @Author: LiuJun
 * @date: 2018/07/31 13:00
 * @Version: 1.0
 * @Copyright: Copyright (c) 2018 - 2019
 */
public interface PermissionManager {

    /**
     * 根据应用ID，角色ID（多个）获取菜单列表树
     * 
     * @param appId
     *            应用ID
     * @param roleIds
     *            角色ID（多个
     * @return
     */
    List<MenuNode> queryMenuNode(Integer appId, List<Integer> roleIds);

    /**
     * 通过权限ID，获取权限名称
     * 
     * @param permissionId
     *            权限ID
     * @return 权限名称
     */
    String getPermissionNameById(Integer permissionId);

    /**
     * 通过权限ID（多个），获取权限名称
     * 
     * @param permissionIds
     *            权限ID（多个）
     * @return 权限名称
     */
    String getPermissionNameByIds(String permissionIds);

    /**
     * 通过角色ID列表，查询权限列表
     * 
     * @param roleIds
     *            角色ID列表
     * @return 权限列表
     */
    List<String> queryPermissionsByRoleIds(List<Integer> roleIds);

    /**
     * 获取菜单列表树
     * 
     * @param appId
     *            应用ID
     * 
     * @return 菜单列表树
     */
    List<TreeNode> queryPermissionTreeNodeByAppId(Integer appId);

    /**
     * 根据角色获取菜单列表树
     * 
     * @param roleId
     *            角色ID
     * @return 菜单列表树
     */
    List<TreeNode> queryPermissionTreeNodeByRoleId(Integer roleId);

    /**
     * 根据权限ID，获取应用名称
     * 
     * @param permissionId
     *            权限ID
     * @return 应用名称
     */
    String getAppNameById(Integer permissionId);
}
